/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package umlproject;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class ServeurIMDB {
    public static String connectionIMDB(String nomDuFilm) {
        nomDuFilm = nomDuFilm.replace(' ', '+'); //dans la requête HTTP, les espaces doivent être remplacés par des +

        Socket clientSocket = null;
	DataOutputStream emission = null;
        DataInputStream reception = null;
        String phrase = null;
        boolean continuerATourner = true;

	// Création de la socket sur le serveur
	try {
		clientSocket = new Socket("www.imdbapi.com", 80);
	} catch (UnknownHostException UHException) {
		// Hôte injoignable/inconnu
		System.out.println("Hôte inconnu !");
		UHException.printStackTrace();
	} catch (IOException io_Exception) {
		// Impossible de se connecter!
		System.out.println("Impossible de se connecter au serveur.");
		clientSocket = null;
	}

	if (clientSocket == null)
        {
		System.exit(-1);
        }

        try {
		// Création des flux (stream) pour la lecture et l'émission de données
		emission = new DataOutputStream(clientSocket.getOutputStream());
		reception = new DataInputStream(clientSocket.getInputStream());

                emission.writeBytes("GET /?i=&t=" + nomDuFilm + " HTTP/1.0\nHost: www.imdbapi.com\n\n");
                emission.flush();
                while(continuerATourner)
                {
                    phrase = reception.readLine();
                    if(phrase == null)
                    {
                        continuerATourner = false;
                    }
                    else if(phrase.length() >= 1)
                    {
                        if(phrase.charAt(0) == '{') //on a trouvé la ligne qui nous intéresse
                        {
                            continuerATourner = false;
                        }
                    }
                }
	} catch (IOException ioe) {
		System.out.println("Exception pendant la communication. Le serveur a probablement fermé la connexion");
	} finally {
		try {
			// Fermer proprement les flux
			emission.close();
                        reception.close();
			// Fermer proprement la socket avant de quitter
			clientSocket.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

        return phrase;
    }
}
